其他
DataFrame数组常用方法(二)
本文作者:孙晓玲
文字编辑:钱梦璇
Pandas是Python中强大的数据分析库,主要是因为它独特的数据结构与数据处理工具使得Python在数据处理与数据分析中非常快捷,前面已经介绍过Pandas常用的数据结构及其常用的方法,今天将为大家介绍DataFrame的常用操作。
追加一行append
append可以实现对原有数据追加一行的效果,选项ignore_index取“True”时忽略追加行的索引,取“False”时保留原索引。这里将df1的第三行追加到df1上,给出忽略索引和不忽略索引两种情况。
df1 = pd.DataFrame(np.random.randn(3, 4), columns=['A', 'B', 'C', 'D'])
s1=df1.iloc[2]
df1.append(s1,ignore_index=True)
df1.append(s1,ignore_index=False)
从输出结果可知,ignore_index取“True时”,追加行的索引为3,取“False”时,追加行的索引为2正是我们选取的行索引。
纵向连接contat
既然可以追加一行,那将多行进行纵向连接怎么解决呢?concat正好可以解决这个问题。他可以将多部分进行纵向连接。为展示方便,这里重新生成一个20行5列的DataFrame,我们现在只需要日期为2号、3号,6到8号,17到20号的数据,就可以这样做。
dates = pd.date_range('20191101', periods=20)
df2 = pd.DataFrame(np.random.randn(20, 5), index=dates, columns=list('abcde'))
pieces=[df2[1:3],df2[5:8],df2[16:]]
pd.concat(pieces)
横向拼接merge
如果想要对数据进行横向拼接merge就可以起到作用啦,这里我们给出两个小例子来进行介绍。第一个例子,将开心果和跳跳虎两个人的身高体重信息进行横向拼接,拼接依据为name,程序及结果如下:
infor1 = pd.DataFrame({'name': ['开心果', '跳跳虎'], 'hight':['179','183']})
infor2 = pd.DataFrame({'name': ['开心果', '跳跳虎'], 'weight': ['68','70']})
infor1
infor2
pd.merge(infor1,infor2,on='name')
第二个例子是对开心果2017到2018两年的身高体重进行交叉拼接,拼接依据为name,拼接程序及结果如下:
dates2=pd.date_range('2017', periods=2,freq='Y')
infor3 = pd.DataFrame({'name': ['开心果', '开心果'], 'hight': ['179','183']},index=dates2)
infor4 = pd.DataFrame({'name': ['开心果', '开心果'], 'weight': ['68','70']},index=dates2)
infor3
infor4
pd.merge(infor3,infor4,on='name')
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。